/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package conexion;

import Modelo.Datos;
import java.sql.Date;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONObject;

/**
 *
 * @author dayana
 */
public class datos_DAO {

    public static List<Datos> consultarDatos(String fecha) {
        ConexionBD conexion = new ConexionBD();
        Statement s = null;
        ResultSet rs = null;

        String query = "SELECT * FROM datos WHERE fecha='" + fecha + "';";

        System.out.println(query);

        try {
            s = conexion.session.createStatement();
        } catch (SQLException se) {
            System.out.println("Error Consultando Datos! " + se.getMessage());
            return null;
        }

        try {
            rs = s.executeQuery(query);

            List<Datos> datos = new ArrayList();
            try {
                int i = 0;
                while (rs.next()) {
                    Datos dato = new Datos(rs.getInt(1), rs.getDate(2), rs.getTime(3), rs.getDouble(4), rs.getDouble(5), rs.getDouble(6), rs.getDouble(7), rs.getDouble(8));
                    datos.add(dato);

                }
            } catch (Exception e) {
                System.out.println("Excepcion: " + e);
            }

            return datos;
        } catch (SQLException se) {
            se.printStackTrace();
            System.out.println("Error Consultando Datos2! " + se.getMessage());
            return null;
        } finally {
            if (conexion != null) {
                conexion.cerrarConexion();
            }
        }
    }

    public static JSONObject listarAll(String fecha, String where) {
        ConexionBD conex = new ConexionBD();
        JSONObject datos = new JSONObject();

        try {
            Statement st = (Statement) conex.session.createStatement();

            String query = "SELECT id, fecha, hora, presion_atmosferica, temperatura, viento, humedad, precipitacion, "
                    + "(Select count(*) FROM datos WHERE fecha='" + fecha +"') "
                    + "FROM datos WHERE fecha='" + fecha + "' " +where+";";

            ResultSet rs = st.executeQuery(query);

            System.out.println(query);

            int i = 0;
            while (rs.next()) {
                JSONObject dato = new JSONObject();
                dato.put("id", rs.getString(1));
                dato.put("fecha", rs.getString(2));
                dato.put("hora", rs.getString(3));
                dato.put("presion_atmosferica", rs.getString(4));
                dato.put("temperatura", rs.getString(5));
                dato.put("viento", rs.getString(6));
                dato.put("humedad", rs.getString(7));
                dato.put("precipitacion", rs.getString(8));
                // ojo con lo de abajo
                dato.put("tam", rs.getString(9));
                datos.put("" + i++, dato);
            }
        } catch (Exception e) {
            System.out.println("Excepcion: " + e);
        }
        return datos;
    }

      public static JSONObject listarMaximos(String fecha) {
        ConexionBD conex = new ConexionBD();
        JSONObject datos = new JSONObject();

        try {
            Statement st = (Statement) conex.session.createStatement();

            String query = "SELECT max(presion_atmosferica), min(presion_atmosferica), "
                    + "max(temperatura), min(temperatura), max(viento), min(viento), "
                    + "max(humedad), min(humedad), max(precipitacion), min(precipitacion) "
                    + "FROM datos WHERE fecha='" + fecha + "';";

            ResultSet rs = st.executeQuery(query);

            System.out.println(query);

            int i = 0;
            while (rs.next()) {
                JSONObject dato = new JSONObject();
                dato.put("maxPresion", rs.getString(1));
                dato.put("minPresion", rs.getString(2));
                dato.put("maxTemperatura", rs.getString(3));
                dato.put("minTemperatura", rs.getString(4));
                dato.put("maxViento", rs.getString(5));
                dato.put("minViento", rs.getString(6));
                dato.put("maxHumedad", rs.getString(7));
                dato.put("minHumedad", rs.getString(8));
                dato.put("maxPrecipitacion", rs.getString(9));
                dato.put("minPrecipitacion", rs.getString(10));
                // ojo con lo de abajo
                datos.put("" + i++, dato);
            }
        } catch (Exception e) {
            System.out.println("Excepcion: " + e);
        }
        return datos;
    }
}
